      SUBROUTINE INTE(XP,YP,XI,YI,XF,YF,HJ,DHJ1,DHJ2,
     &                GJ,DGJ1,DGJ2,B,BJ,DBJ1,DBJ2,alfa,IPTI,NG)
C
C ESTA SUBROTINA CALCULA O VALOR DOS ELEMENTOS FORA DA DIAGONAL DA
C MATRIZ H E G ATRAVES DE INTEGRACAO NUMERICA AO LONGO DOS ELEMENTOS
C DO CONTORNO.
C

      IMPLICIT DOUBLE PRECISION (A-H,O-Z)

      COMMON /PG/ GI(8,2),OME(8,2)

      IF(NG.EQ.4)THEN
         ING=1
      ELSE IF(NG.EQ.8) THEN
         ING=2
      ELSE
         STOP'Numero incorreto de Pontos de Gauss'
      END IF
      
      AX= 0.5*(XF-XI)
      AY= 0.5*(YF-YI)

C     Calculo de L/2
      XL2=DSQRT(AX*AX + AY*AY)

C     Calcula (r*n)L/2 : (r escalar n)* L/2 
C     (constante para o elemento constante)
      RNXL2= (XI-XP)*AY - (YI-YP)*AX 


      Xmed= 0.5*(XF+XI)
      Ymed= 0.5*(YF+YI)

      GJ=   0.D0
      DGJ1= 0.D0
      DGJ2= 0.D0

      HJ=   0.D0
      DHJ1= 0.D0
      DHJ2= 0.D0

      BJ=   0.D0
      DBJ1= 0.D0
      DBJ2= 0.D0

      DO 40 I=1,NG

C     Coordenadas do ponto de integracao: 
         XCO= Xmed + AX*GI(I,ING)
         YCO= Ymed + AY*GI(I,ING)

C     Componentes do Raio
         Rx= XCO - XP
         Ry= YCO - YP
         Raio2= Rx*Rx + Ry*Ry
         Raio=  DSQRT(Raio2)
c         RNXL2= (Rx*AY - Ry*AX)

C     Integracao de G e H

         GJ= GJ + (alfa -  DLOG(Raio))      * OME(I,ING)
         HJ= HJ - (RNXL2 / Raio2 ) * OME(I,ING)

         BJ= BJ + (0.5 - DLOG(Raio))*OME(I,ING)

C     Calculo das derivadas em 
         IF (IPTI.EQ.1) THEN
            
            DGJ1= DGJ1 + Rx* OME(I,ING)/Raio2
            DGJ2= DGJ2 + Ry* OME(I,ING)/Raio2
            
            DHJ1= DHJ1 + ( AY - 2.d0*RNXL2*Rx/Raio2)* OME(I,ING)/Raio2
            DHJ2= DHJ2 + (-AX - 2.d0*RNXL2*Ry/Raio2)* OME(I,ING)/Raio2

	   DBJ1= DBJ1 + (RNXL2*Rx/Raio2-(0.5d0-DLOG(Raio))*AY)*OME(I,ING)
	   DBJ2= DBJ2 + (RNXL2*Ry/Raio2+(0.5d0-DLOG(Raio))*AX)*OME(I,ING)
	END IF


 40   CONTINUE

C        Multiplica lj/2 a Gij
      GJ= GJ * XL2

C     Calculo das derivadas em 
      IF (IPTI.EQ.1) THEN
         DGJ1= DGJ1 * XL2
         DGJ2= DGJ2 * XL2
      END IF

c        Multiplica B.r.n por bj
      BJ=   0.5D0 * B * RNXL2 * BJ
      DBJ1= 0.5D0 * B *         DBJ1
      DBJ2= 0.5D0 * B *         DBJ2

      RETURN
      END
